﻿Imports System.Data
Imports System.Data.SqlClient
Imports SuporteModel

Public Class ProvChamadoDAO
    Implements IChamado

    Private connection As SqlConnection

    Public Sub New(ByVal connection As SqlConnection)
        Me.connection = connection
    End Sub

    Public Function AtualizarChamado(ByVal parIdChamado As Integer, ByVal parNovoComentario As SuporteModel.Comentario) As Boolean Implements IChamado.AtualizarChamado

    End Function

    Public Function BuscarChamadoPorId(ByVal parIdChamado As Integer) As SuporteModel.Chamado Implements IChamado.BuscarChamadoPorId

    End Function
    'TODO VERIFICAR
    Public Function CadastrarChamado(ByVal parChamado As SuporteModel.Chamado) As Boolean Implements IChamado.CadastrarChamado
        Dim fResul As Boolean = False
        Try
            Me.connection.Open()
            'select CHA_CODIGO,CHA_TIPO,CHA_LOJA,CHA_TECNICO,CHA_DATA,CHA_CONTATO,CHA_TELA,CHA_STATUS,CHA_PROBLEMA,CHA_SOLUCAO,CHA_VERSAO,CHA_SISTEMA,CHA_MATRICULA,CHA_PRIORIDADE,CHA_D_VERSAO,CHA_RESPONSAVEL from CHAMADOS
            Dim comm As New SqlCommand("INSERT INTO CHAMADOS (CHA_CODIGO,CHA_TECNICO,CHA_DATA,CHA_PROBLEMA,CHA_SOLUCAO,CHA_LOJA,CHA_MATRICULA,CHA_TIPO,CHA_PRIORIDADE,CHA_CONTATO,CHA_VERSAO,CHA_SISTEMA,CHA_RESPONSAVEL,CHA_TELA) VALUES (@codigo,@tecnico,@data,@problema,@solucao,@loja,@matricula,@tipo,@prioridade,@contato,@versao,@sistema,@responsavel,@tela)", Me.connection)
            comm.Parameters.AddWithValue("@codigo", parChamado.Codigo)
            comm.Parameters.AddWithValue("@tecnico", parChamado.TecnicoOld.IdTecnico)
            comm.Parameters.AddWithValue("@data", parChamado.DataCadastro)
            comm.Parameters.AddWithValue("@problema", parChamado.Problema)
            comm.Parameters.AddWithValue("@solucao", parChamado.Solucao)
            comm.Parameters.AddWithValue("@loja", parChamado.Loja.Codigo)
            comm.Parameters.AddWithValue("@matricula", parChamado.Usuario.Codigo)
            comm.Parameters.AddWithValue("@tipo", parChamado.Tipo)
            comm.Parameters.AddWithValue("@prioridade", parChamado.Prioridade)
            comm.Parameters.AddWithValue("@contato", parChamado.ContatoOld)
            comm.Parameters.AddWithValue("@versao", parChamado.Versao)
            comm.Parameters.AddWithValue("@sistema", parChamado.Sistema.IdSistema)
            comm.Parameters.AddWithValue("@responsavel", parChamado.Usuario.Codigo)
            comm.Parameters.AddWithValue("@tela", parChamado.TelaOld.IdTela)
            fResul = comm.ExecuteNonQuery()
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return fResul
    End Function

    Public Function CadastrarComentario(ByVal parUsuario As SuporteModel.Usuario, ByVal parIdChamado As Integer, ByVal parComentario As String) As Boolean Implements IChamado.CadastrarComentario

    End Function

    Public Function ExcluirComentario(ByVal parIdComentario As Integer) As Boolean Implements IChamado.ExcluirComentario

    End Function

    Public Function FecharChamado(ByVal parIdChamado As Integer) As Boolean Implements IChamado.FecharChamado

    End Function

    Public Function ListarComentarioPorChamado(ByVal parIdChamado As Integer) As System.Collections.Generic.List(Of SuporteModel.Comentario) Implements IChamado.ListarComentarioPorChamado
        Dim listaComentario As New List(Of Comentario)
        Try
            Me.connection.Open()
            Dim comm As New SqlCommand("select * from CHAMADOS_COMENTARIOS where CHC_CHAMADO = @id_chamado", Me.connection)
            comm.Parameters.AddWithValue("@id_chamado", parIdChamado)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim comentario As New Comentario
                comentario.Chamado = New Chamado
                comentario.Chamado.Codigo = Convert.ToInt64(dataReader("CHC_CHAMADO"))
                comentario.Comentario = dataReader("CHC_COMENTARIO").ToString()
                comentario.DataCadastro = Convert.ToDateTime(dataReader("CHC_DATA"))
                listaComentario.Add(comentario)
            End While
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return listaComentario
    End Function

    Public Function UltimoChamado() As SuporteModel.Chamado Implements IChamado.UltimoChamado
        Dim chamado As New Chamado
        Try
            Me.connection.Open()
            Dim comm As New SqlCommand("SELECT * FROM CHAMADOS WHERE CHA_CODIGO IN(select max(CHA_CODIGO) from CHAMADOS)", Me.connection)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            If dataReader.Read() Then
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.Loja = New Loja
                chamado.Loja.Codigo = Convert.ToInt64(dataReader("CHA_LOJA"))
                chamado.Solucao = dataReader("CHA_SOLICAO").ToString()
                chamado.Usuario = New Usuario
                chamado.Usuario.Codigo = dataReader("CHA_MATRICULA").ToString()
                chamado.TecnicoOld = New Tecnico
                chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("CHA_TECNICO"))
                chamado.ContatoOld = Convert.ToString(dataReader("CHA_CONTATO"))
                chamado.TelaOld = New Tela
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("CHA_TELA"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
            End If
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return chamado
    End Function

    Public Function listarChamado(ByVal parPagAtual As Integer, ByVal parQuantidadeChamados As Integer, ByVal parDataInicio As Date, ByVal parDataFim As Date, ByVal parStatus As Integer, ByVal parTipo As Integer) As System.Collections.Generic.List(Of SuporteModel.Chamado) Implements IChamado.ListarChamado
        Dim listaChamados As New List(Of Chamado)
        Try
            Me.connection.Open()
            Dim comm As New SqlCommand("select top(@qtde) * from CHAMADOS WHERE CHA_CODIGO > @pagAtual", Me.connection)
            comm.Parameters.AddWithValue("@qtde", parQuantidadeChamados)
            comm.Parameters.AddWithValue("@parAtual", parPagAtual)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim chamado As New Chamado
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.DataAbertura = Convert.ToDateTime(dataReader("CHA_DATA"))
                chamado.Prioridade = Convert.ToInt64(dataReader("CHA_PRIORIDADE"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
                chamado.Sistema = New Sistema
                chamado.Sistema.IdSistema = Convert.ToInt64(dataReader("CHA_SISTEMA"))
                chamado.Solucao = dataReader("CHA_SOLUCAO").ToString()
                chamado.Status = Convert.ToInt64(dataReader("CHA_STATUS"))
                chamado.TecnicoOld = New Tecnico
                chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("CHA_TECNICO"))
                chamado.TelaOld = New Tela
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("CHA_TELA"))
                chamado.Tipo = Convert.ToInt64(dataReader("CHA_TIPO"))
                chamado.Usuario = New Usuario
                chamado.Usuario.Codigo = dataReader("CHA_MATRICULA")
                chamado.Versao = Convert.ToDateTime(dataReader("CHA_D_VERSAO"))
                listaChamados.Add(chamado)
            End While

        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return listaChamados
    End Function

    'TODO campos estão retornando vazios ou null dando exception
    'SELECT TOP(10) CHA_CODIGO,CHA_STATUS,CHA_VERSAO,CHA_PRIORIDADE,CHA_TIPO,SIS_NOME,CHA_CONTATO,CHA_DATA,SIS_CODIGO,SIS_INATIVO,LOJ_CODIGO,LOJ_NOME,LOJ_TELEFONE,LOJ_EMAIL,LOJ_GERENTE,LOJ_OBS,LOJ_CLIENTE,TEC_CODIGO,TEC_NEXTEL,TEC_RESIDENCIA,TEC_EMAIL,TEC_CELULAR,TEC_NOME,TEC_ATIVO,TEL_CODIGO,TEL_NOME,TEL_DOCUMENTACAO,TEL_INATIVA from CHAMADOS
    'LEFT JOIN SISTEMAS ON SIS_CODIGO = CHA_SISTEMA 
    'LEFT JOIN LOJAS ON CHA_LOJA = LOJ_CODIGO 
    'LEFT JOIN TECNICOS ON CHA_TECNICO = TEC_CODIGO
    'LEFT JOIN TELAS ON TEL_CODIGO = CHA_TELA
    'WHERE CHA_CODIGO > 50 and CHA_SISTEMA IS NOT NULL AND CHA_SISTEMA > 0 ORDER BY CHA_CODIGO
    '    'ROW_NUMBER() OVER(ORDER BY cha_codigo DESC)

    Public Function listarChamado(ByVal parPagAtual As Integer, ByVal parQuantidadeChamados As Integer, ByVal parStatus As Integer, ByVal parTipo As Integer) As System.Collections.Generic.List(Of SuporteModel.Chamado) Implements IChamado.ListarChamado
        Dim listaChamados As New List(Of Chamado)
        Try
            Me.connection.Open()
            Dim comm As New SqlCommand("SELECT TOP(@qtde) CHA_CODIGO,CHA_STATUS,CHA_SOLUCAO,CHA_PROBLEMA,CHA_VERSAO,CHA_PRIORIDADE,CHA_TIPO,SIS_NOME,CHA_CONTATO,CHA_DATA,SIS_CODIGO,SIS_INATIVO,LOJ_CODIGO,LOJ_NOME,LOJ_TELEFONE,LOJ_EMAIL,LOJ_GERENTE,LOJ_OBS,LOJ_CLIENTE,TEC_CODIGO,TEC_NEXTEL,TEC_RESIDENCIA,TEC_EMAIL,TEC_CELULAR,TEC_NOME,TEC_ATIVO,TEL_CODIGO,TEL_NOME,TEL_DOCUMENTACAO,TEL_INATIVA from CHAMADOS LEFT JOIN SISTEMAS ON SIS_CODIGO = CHA_SISTEMA  LEFT JOIN LOJAS ON CHA_LOJA = LOJ_CODIGO LEFT JOIN TECNICOS ON CHA_TECNICO = TEC_CODIGO LEFT JOIN TELAS ON TEL_CODIGO = CHA_TELA WHERE CHA_CODIGO > @pagAtual  and CHA_SISTEMA IS NOT NULL AND CHA_SISTEMA > 0 and CHA_TECNICO is not null and CHA_TECNICO > 0 and CHA_LOJA is not null and CHA_LOJA > 0 order by CHA_CODIGO", Me.connection)
            comm.Parameters.AddWithValue("@qtde", parQuantidadeChamados)
            comm.Parameters.AddWithValue("@pagAtual", parPagAtual)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim chamado As New Chamado
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.DataAbertura = Convert.ToDateTime(dataReader("CHA_DATA"))
                chamado.Prioridade = Convert.ToInt64(dataReader("CHA_PRIORIDADE"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
                chamado.Sistema = New Sistema
                chamado.Sistema.IdSistema = Convert.ToInt64(dataReader("SIS_CODIGO"))
                chamado.Sistema.Nome = dataReader("SIS_NOME").ToString()
                'chamado.Sistema.Inativo = dataReader("SIS_INATIVO") > 0
                chamado.Solucao = dataReader("CHA_SOLUCAO").ToString()
                chamado.Status = Convert.ToInt64(dataReader("CHA_STATUS"))
                'chamado.TecnicoOld = New Tecnico
                'chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("TEC_CODIGO"))
                chamado.TelaOld = New Tela
                chamado.Loja = New Loja
                chamado.Loja.Codigo = Convert.ToInt64(dataReader("LOJ_CODIGO"))
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("TEL_CODIGO"))
                chamado.TelaOld.NomeTela = dataReader("TEL_NOME").ToString()
                chamado.TelaOld.Inativa = dataReader("TEL_INATIVA") > 0
                chamado.Tipo = Convert.ToInt64(dataReader("CHA_TIPO"))

                'chamado.Usuario = New Usuario
                'chamado.Usuario.Codigo = dataReader("CHA_MATRICULA")
                'chamado.Versao = Convert.ToDateTime(dataReader("CHA_VERSAO"))
                listaChamados.Add(chamado)
            End While
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return listaChamados
    End Function

    Public Function TotalChamados() As Integer Implements IChamado.TotalChamados
        Dim total As Integer = 0
        Try
            Me.connection.Open()
            Dim comm As New SqlCommand("select COUNT(*) as TOTAL from CHAMADOS", Me.connection)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            If dataReader.Read() Then
                total = Convert.ToInt64(dataReader("TOTAL"))
            End If
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return total
    End Function

    Public Function NextListaChamados(ByVal parPagAtual As Integer, ByVal parQuantidadeItens As Integer, ByVal parListaClientes As System.Collections.Generic.List(Of SuporteModel.Cliente), ByVal parListaLojas As System.Collections.Generic.List(Of SuporteModel.Loja), ByVal parListaSistemas As System.Collections.Generic.List(Of SuporteModel.Sistema), ByVal parListaTecnicos As System.Collections.Generic.List(Of SuporteModel.Tecnico), ByVal parListaTelas As System.Collections.Generic.List(Of SuporteModel.Tela), ByVal parIdCodigo As Integer, ByVal parStatus As Integer, ByVal parTipo As Integer, ByVal parDataInicio As Date, ByVal parDataFim As Date) As System.Collections.Generic.List(Of SuporteModel.Chamado) Implements IChamado.NextListaChamados
        Dim listaChamados As New List(Of Chamado)
        Try
            Me.connection.Open()
            Dim sqlLojas As String = ""
            Dim sqlSistemas As String = ""
            Dim sqlTecnicos As String = ""
            Dim sqlTela As String = ""
            Dim sqlData = ""

            If parIdCodigo > 0 Then

            Else
                If Not parListaLojas Is Nothing Then
                    If parListaLojas.Count > 0 Then
                        sqlLojas = " AND CHA_LOJA IN("
                        For index = 0 To parListaLojas.Count
                            If index = parListaLojas.Count Then
                                sqlLojas = sqlLojas + parListaLojas(index).Codigo & ")"
                            Else
                                sqlLojas = sqlLojas + parListaLojas(index).Codigo & ","
                            End If
                        Next
                    End If
                End If

                If Not parListaSistemas Is Nothing Then
                    If parListaSistemas.Count > 0 Then
                        sqlSistemas = " AND CHA_SISTEMA IN("
                        For index = 0 To parListaSistemas.Count
                            If index = parListaSistemas.Count Then
                                sqlSistemas = sqlSistemas + parListaSistemas(index).IdSistema & ")"
                            Else
                                sqlSistemas = sqlSistemas + parListaSistemas(index).IdSistema & ","
                            End If
                        Next
                    End If
                End If

                If Not parListaTecnicos Is Nothing Then
                    If parListaTecnicos.Count > 0 Then
                        sqlTecnicos = " AND CHA_TECNICO IN("
                        For index = 0 To parListaTecnicos.Count
                            If index = parListaTecnicos.Count Then
                                sqlTecnicos = sqlTecnicos + parListaTecnicos(index).IdTecnico & ")"
                            Else
                                sqlTecnicos = sqlTecnicos + parListaTecnicos(index).IdTecnico & ","
                            End If
                        Next
                    End If
                End If

                If Not parListaTelas Is Nothing Then
                    If parListaTelas.Count > 0 Then
                        sqlTecnicos = " AND CHA_TELA IN("
                        For index = 0 To parListaTelas.Count
                            If index = parListaTelas.Count Then
                                sqlTela = sqlTela + parListaTelas(index).IdTela & ")"
                            Else
                                sqlTela = sqlTela + parListaTelas(index).IdTela & ","
                            End If
                        Next
                    End If
                End If

                'If IsDate(parDataInicio) And IsDate(parDataFim) Then
                '    sqlData = " AND CHA_DATA BETWEEN '" & parDataInicio.ToString() & "' AND '" & parDataFim.ToString() & "'"
                'End If

            End If

            Dim comm As New SqlCommand("SELECT TOP( " & parQuantidadeItens & " ) CHA_CODIGO,CHA_STATUS,CHA_SOLUCAO,CHA_PROBLEMA,CHA_VERSAO,CHA_PRIORIDADE,CHA_TIPO,SIS_NOME,CHA_CONTATO,CHA_DATA,SIS_CODIGO,SIS_INATIVO,LOJ_CODIGO,LOJ_NOME,LOJ_TELEFONE,LOJ_EMAIL,LOJ_GERENTE,LOJ_OBS,LOJ_CLIENTE,TEC_CODIGO,TEC_NEXTEL,TEC_RESIDENCIA,TEC_EMAIL,TEC_CELULAR,TEC_NOME,TEC_ATIVO,TEL_CODIGO,TEL_NOME,TEL_DOCUMENTACAO,TEL_INATIVA from CHAMADOS LEFT JOIN SISTEMAS ON SIS_CODIGO = CHA_SISTEMA  LEFT JOIN LOJAS ON CHA_LOJA = LOJ_CODIGO LEFT JOIN TECNICOS ON CHA_TECNICO = TEC_CODIGO LEFT JOIN TELAS ON TEL_CODIGO = CHA_TELA WHERE CHA_CODIGO > @pagAtual  and CHA_SISTEMA IS NOT NULL AND CHA_SISTEMA > 0 and CHA_TECNICO is not null and CHA_TECNICO > 0 and CHA_LOJA is not null and CHA_LOJA > 0 " & sqlData & sqlLojas & sqlTecnicos & sqlTela & " order by CHA_CODIGO", Me.connection)
            'comm.Parameters.AddWithValue("@qtde", parQuantidadeItens)
            comm.Parameters.AddWithValue("@pagAtual", parPagAtual)

            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim chamado As New Chamado
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.DataAbertura = Convert.ToDateTime(dataReader("CHA_DATA"))
                chamado.Prioridade = Convert.ToInt64(dataReader("CHA_PRIORIDADE"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
                chamado.Sistema = New Sistema
                chamado.Sistema.IdSistema = Convert.ToInt64(dataReader("SIS_CODIGO"))
                chamado.Sistema.Nome = dataReader("SIS_NOME").ToString()
                'chamado.Sistema.Inativo = dataReader("SIS_INATIVO") > 0
                chamado.Solucao = dataReader("CHA_SOLUCAO").ToString()
                chamado.Status = Convert.ToInt64(dataReader("CHA_STATUS"))
                'chamado.TecnicoOld = New Tecnico
                'chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("TEC_CODIGO"))
                chamado.TelaOld = New Tela
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("TEL_CODIGO"))
                chamado.TelaOld.NomeTela = dataReader("TEL_NOME").ToString()
                chamado.TelaOld.Inativa = dataReader("TEL_INATIVA") > 0
                chamado.Tipo = Convert.ToInt64(dataReader("CHA_TIPO"))
                'chamado.Usuario = New Usuario
                'chamado.Usuario.Codigo = dataReader("CHA_MATRICULA")
                'chamado.Versao = Convert.ToDateTime(dataReader("CHA_VERSAO"))
                listaChamados.Add(chamado)
            End While
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return listaChamados
    End Function

    Public Function PreviousListaChamados(ByVal parPagAtual As Integer, ByVal parQuantidadeItens As Integer, ByVal parListaClientes As System.Collections.Generic.List(Of SuporteModel.Cliente), ByVal parListaLojas As System.Collections.Generic.List(Of SuporteModel.Loja), ByVal parListaSistemas As System.Collections.Generic.List(Of SuporteModel.Sistema), ByVal parListaTecnicos As System.Collections.Generic.List(Of SuporteModel.Tecnico), ByVal parListaTelas As System.Collections.Generic.List(Of SuporteModel.Tela), ByVal parIdCodigo As Integer, ByVal parStatus As Integer, ByVal parTipo As Integer, ByVal parDataInicio As Date, ByVal parDataFim As Date) As System.Collections.Generic.List(Of SuporteModel.Chamado) Implements IChamado.PreviousListaChamados
        Dim listaChamados As New List(Of Chamado)
        Try

            Dim sqlLojas As String = ""
            Dim sqlSistemas As String = ""
            Dim sqlTecnicos As String = ""
            Dim sqlTela As String = ""
            Dim sqlData = ""

            If parIdCodigo > 0 Then

            Else
                If Not parListaLojas Is Nothing Then
                    If parListaLojas.Count > 0 Then
                        sqlLojas = " AND CHA_LOJA IN("
                        For index = 0 To parListaLojas.Count
                            If index = parListaLojas.Count Then
                                sqlLojas = sqlLojas + parListaLojas(index).Codigo & ")"
                            Else
                                sqlLojas = sqlLojas + parListaLojas(index).Codigo & ","
                            End If
                        Next
                    End If
                End If

                If Not parListaSistemas Is Nothing Then
                    If parListaSistemas.Count > 0 Then
                        sqlSistemas = " AND CHA_SISTEMA IN("
                        For index = 0 To parListaSistemas.Count
                            If index = parListaSistemas.Count Then
                                sqlSistemas = sqlSistemas + parListaSistemas(index).IdSistema & ")"
                            Else
                                sqlSistemas = sqlSistemas + parListaSistemas(index).IdSistema & ","
                            End If
                        Next
                    End If
                End If

                If Not parListaTecnicos Is Nothing Then
                    If parListaTecnicos.Count > 0 Then
                        sqlTecnicos = " AND CHA_TECNICO IN("
                        For index = 0 To parListaTecnicos.Count
                            If index = parListaTecnicos.Count Then
                                sqlTecnicos = sqlTecnicos + parListaTecnicos(index).IdTecnico & ")"
                            Else
                                sqlTecnicos = sqlTecnicos + parListaTecnicos(index).IdTecnico & ","
                            End If
                        Next
                    End If
                End If

                If Not parListaTelas Is Nothing Then
                    If parListaTelas.Count > 0 Then
                        sqlTecnicos = " AND CHA_TELA IN("
                        For index = 0 To parListaTelas.Count
                            If index = parListaTelas.Count Then
                                sqlTela = sqlTela + parListaTelas(index).IdTela & ")"
                            Else
                                sqlTela = sqlTela + parListaTelas(index).IdTela & ","
                            End If
                        Next
                    End If
                End If

                'If IsDate(parDataInicio) And IsDate(parDataFim) Then

                '    sqlData = " AND CHA_DATA BETWEEN '" & parDataInicio.Day.ToString("00") & "/" & parDataInicio.Month.ToString("00") & "/" & parDataInicio.Year & " 00:00' AND '" & parDataFim.Day & "/" & parDataFim.Month & "/" & parDataFim.Year & " 23:59'"
                'End If

            End If

            Me.connection.Open()
            Dim comm As New SqlCommand("SELECT TOP(" & parQuantidadeItens & ") CHA_CODIGO,CHA_STATUS,CHA_SOLUCAO,CHA_PROBLEMA,CHA_VERSAO,CHA_PRIORIDADE,CHA_TIPO,SIS_NOME,CHA_CONTATO,CHA_DATA,SIS_CODIGO,SIS_INATIVO,LOJ_CODIGO,LOJ_NOME,LOJ_TELEFONE,LOJ_EMAIL,LOJ_GERENTE,LOJ_OBS,LOJ_CLIENTE,TEC_CODIGO,TEC_NEXTEL,TEC_RESIDENCIA,TEC_EMAIL,TEC_CELULAR,TEC_NOME,TEC_ATIVO,TEL_CODIGO,TEL_NOME,TEL_DOCUMENTACAO,TEL_INATIVA from CHAMADOS LEFT JOIN SISTEMAS ON SIS_CODIGO = CHA_SISTEMA  LEFT JOIN LOJAS ON CHA_LOJA = LOJ_CODIGO LEFT JOIN TECNICOS ON CHA_TECNICO = TEC_CODIGO LEFT JOIN TELAS ON TEL_CODIGO = CHA_TELA WHERE CHA_CODIGO < " & parPagAtual & "  and CHA_SISTEMA IS NOT NULL AND CHA_SISTEMA > 0 and CHA_TECNICO is not null and CHA_TECNICO > 0 and CHA_LOJA is not null and CHA_LOJA > 0 " & sqlData & sqlLojas & sqlTecnicos & sqlTela & " order by CHA_CODIGO desc", Me.connection)
            'comm.Parameters.AddWithValue("@qtde", parQuantidadeItens)
            'comm.Parameters.AddWithValue("@pagAtual", parPagAtual)

            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim chamado As New Chamado
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.DataAbertura = Convert.ToDateTime(dataReader("CHA_DATA"))
                chamado.Prioridade = Convert.ToInt64(dataReader("CHA_PRIORIDADE"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
                chamado.Sistema = New Sistema
                chamado.Sistema.IdSistema = Convert.ToInt64(dataReader("SIS_CODIGO"))
                chamado.Sistema.Nome = dataReader("SIS_NOME").ToString()
                'chamado.Sistema.Inativo = dataReader("SIS_INATIVO") > 0
                chamado.Solucao = dataReader("CHA_SOLUCAO").ToString()
                chamado.Status = Convert.ToInt64(dataReader("CHA_STATUS"))
                'chamado.TecnicoOld = New Tecnico
                'chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("TEC_CODIGO"))
                chamado.TelaOld = New Tela
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("TEL_CODIGO"))
                chamado.TelaOld.NomeTela = dataReader("TEL_NOME").ToString()
                chamado.TelaOld.Inativa = dataReader("TEL_INATIVA") > 0
                chamado.Tipo = Convert.ToInt64(dataReader("CHA_TIPO"))
                'chamado.Usuario = New Usuario
                'chamado.Usuario.Codigo = dataReader("CHA_MATRICULA")
                'chamado.Versao = Convert.ToDateTime(dataReader("CHA_VERSAO"))
                listaChamados.Add(chamado)
            End While
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return listaChamados
    End Function


    Function listarChamado(ByVal parListaClientes As System.Collections.Generic.List(Of SuporteModel.Cliente), ByVal parListaLojas As System.Collections.Generic.List(Of SuporteModel.Loja), ByVal parListaSistemas As System.Collections.Generic.List(Of SuporteModel.Sistema), ByVal parListaTecnicos As System.Collections.Generic.List(Of SuporteModel.Tecnico), ByVal parListaTelas As System.Collections.Generic.List(Of SuporteModel.Tela), ByVal parIdCodigo As Integer, ByVal parStatus As Integer, ByVal parTipo As Integer, ByVal parDataInicio As Date, ByVal parDataFim As Date) As System.Collections.Generic.List(Of SuporteModel.Chamado) Implements IChamado.ListarChamado
        Dim listaChamados As New List(Of Chamado)
        Try
            Dim sqlLojas As String = ""
            Dim sqlSistemas As String = ""
            Dim sqlTecnicos As String = ""
            Dim sqlTela As String = ""
            Dim sqlData = ""
            If parIdCodigo > 0 Then
            Else
                If Not parListaLojas Is Nothing Then
                    If parListaLojas.Count > 0 Then
                        sqlLojas = " AND CHA_LOJA IN("
                        For index = 0 To parListaLojas.Count
                            If index = parListaLojas.Count Then
                                sqlLojas = sqlLojas + parListaLojas(index).Codigo & ")"
                            Else
                                sqlLojas = sqlLojas + parListaLojas(index).Codigo & ","
                            End If
                        Next
                    End If
                End If
                If Not parListaSistemas Is Nothing Then
                    If parListaSistemas.Count > 0 Then
                        sqlSistemas = " AND CHA_SISTEMA IN("
                        For index = 0 To parListaSistemas.Count
                            If index = parListaSistemas.Count Then
                                sqlSistemas = sqlSistemas + parListaSistemas(index).IdSistema & ")"
                            Else
                                sqlSistemas = sqlSistemas + parListaSistemas(index).IdSistema & ","
                            End If
                        Next
                    End If
                End If
                If Not parListaTecnicos Is Nothing Then
                    If parListaTecnicos.Count > 0 Then
                        sqlTecnicos = " AND CHA_TECNICO IN("
                        For index = 0 To parListaTecnicos.Count - 1
                            If index = parListaTecnicos.Count - 1 Then
                                sqlTecnicos = sqlTecnicos & parListaTecnicos(index).IdTecnico & ")"
                            Else
                                sqlTecnicos = sqlTecnicos & parListaTecnicos(index).IdTecnico & ","
                            End If
                        Next
                    End If
                End If
                If Not parListaTelas Is Nothing Then
                    If parListaTelas.Count > 0 Then
                        sqlTecnicos = " AND CHA_TELA IN("
                        For index = 0 To parListaTelas.Count
                            If index = parListaTelas.Count Then
                                sqlTela = sqlTela + parListaTelas(index).IdTela & ")"
                            Else
                                sqlTela = sqlTela + parListaTelas(index).IdTela & ","
                            End If
                        Next
                    End If
                End If
                If IsDate(parDataInicio) And IsDate(parDataFim) Then
                    sqlData = " AND CHA_DATA BETWEEN '" & parDataInicio.ToString() & "' AND '" & parDataFim.ToString() & "'"
                End If
            End If
            Me.connection.Open()
            Dim comm As New SqlCommand("SELECT CHA_CODIGO,CHA_STATUS,CHA_SOLUCAO,CHA_PROBLEMA,CHA_VERSAO,CHA_PRIORIDADE,CHA_TIPO,SIS_NOME,CHA_CONTATO,CHA_DATA,SIS_CODIGO,SIS_INATIVO,LOJ_CODIGO,LOJ_NOME,LOJ_TELEFONE,LOJ_EMAIL,LOJ_GERENTE,LOJ_OBS,LOJ_CLIENTE,TEC_CODIGO,TEC_NEXTEL,TEC_RESIDENCIA,TEC_EMAIL,TEC_CELULAR,TEC_NOME,TEC_ATIVO,TEL_CODIGO,TEL_NOME,TEL_DOCUMENTACAO,TEL_INATIVA from CHAMADOS LEFT JOIN SISTEMAS ON SIS_CODIGO = CHA_SISTEMA  LEFT JOIN LOJAS ON CHA_LOJA = LOJ_CODIGO LEFT JOIN TECNICOS ON CHA_TECNICO = TEC_CODIGO LEFT JOIN TELAS ON TEL_CODIGO = CHA_TELA WHERE CHA_CODIGO > 0  and CHA_SISTEMA IS NOT NULL AND CHA_SISTEMA > 0 and CHA_TECNICO is not null and CHA_TECNICO > 0 and CHA_LOJA is not null and CHA_LOJA > 0 " & sqlData & sqlLojas & sqlTecnicos & sqlTela & " order by CHA_CODIGO", Me.connection)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim chamado As New Chamado
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.DataAbertura = Convert.ToDateTime(dataReader("CHA_DATA"))
                chamado.Prioridade = Convert.ToInt64(dataReader("CHA_PRIORIDADE"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
                chamado.Sistema = New Sistema
                chamado.Sistema.IdSistema = Convert.ToInt64(dataReader("SIS_CODIGO"))
                chamado.Sistema.Nome = dataReader("SIS_NOME").ToString()
                'chamado.Sistema.Inativo = dataReader("SIS_INATIVO") > 0
                chamado.Solucao = dataReader("CHA_SOLUCAO").ToString()
                chamado.Status = Convert.ToInt64(dataReader("CHA_STATUS"))
                'chamado.TecnicoOld = New Tecnico
                'chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("TEC_CODIGO"))
                chamado.TelaOld = New Tela
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("TEL_CODIGO"))
                chamado.TelaOld.NomeTela = dataReader("TEL_NOME").ToString()
                chamado.TelaOld.Inativa = dataReader("TEL_INATIVA") > 0
                chamado.Tipo = Convert.ToInt64(dataReader("CHA_TIPO"))
                'chamado.Usuario = New Usuario
                'chamado.Usuario.Codigo = dataReader("CHA_MATRICULA")
                'chamado.Versao = Convert.ToDateTime(dataReader("CHA_VERSAO"))
                listaChamados.Add(chamado)
            End While
        Catch ex As Exception
        Finally
            Me.connection.Close()
        End Try
        Return listaChamados
    End Function

    Public Function ListarChamado(parDataInico As DateTime, parDataFim As DateTime) As List(Of Chamado) Implements IChamado.ListarChamado
        Dim listaChamados As New List(Of Chamado)
        Try
            Me.connection.Open()
            Dim comm As New SqlCommand("SELECT CHA_CODIGO,CHA_STATUS,CHA_SOLUCAO,CHA_PROBLEMA,CHA_VERSAO,CHA_PRIORIDADE,CHA_TIPO,SIS_NOME,CHA_CONTATO,CHA_DATA,SIS_CODIGO,SIS_INATIVO,LOJ_CODIGO,LOJ_NOME,LOJ_TELEFONE,LOJ_EMAIL,LOJ_GERENTE,LOJ_OBS,LOJ_CLIENTE,TEC_CODIGO,TEC_NEXTEL,TEC_RESIDENCIA,TEC_EMAIL,TEC_CELULAR,TEC_NOME,TEC_ATIVO,TEL_CODIGO,TEL_NOME,TEL_DOCUMENTACAO,TEL_INATIVA from CHAMADOS LEFT JOIN SISTEMAS ON SIS_CODIGO = CHA_SISTEMA  LEFT JOIN LOJAS ON CHA_LOJA = LOJ_CODIGO LEFT JOIN TECNICOS ON CHA_TECNICO = TEC_CODIGO LEFT JOIN TELAS ON TEL_CODIGO = CHA_TELA WHERE CHA_CODIGO > 0  and CHA_SISTEMA IS NOT NULL AND CHA_SISTEMA > 0 and CHA_TECNICO is not null and CHA_TECNICO > 0 and CHA_LOJA is not null and CHA_LOJA > 0  AND CHA_DATA BETWEEN '" & parDataInico.ToString() & "' AND '" & parDataFim.ToString() & "'  order by CHA_CODIGO", Me.connection)
            Dim dataReader As SqlDataReader = comm.ExecuteReader()
            While dataReader.Read()
                Dim chamado As New Chamado
                chamado.Codigo = Convert.ToInt64(dataReader("CHA_CODIGO"))
                chamado.DataAbertura = Convert.ToDateTime(dataReader("CHA_DATA"))
                chamado.Prioridade = Convert.ToInt64(dataReader("CHA_PRIORIDADE"))
                chamado.Problema = dataReader("CHA_PROBLEMA").ToString()
                chamado.Sistema = New Sistema
                chamado.Sistema.IdSistema = Convert.ToInt64(dataReader("SIS_CODIGO"))
                chamado.Sistema.Nome = dataReader("SIS_NOME").ToString()
                'chamado.Sistema.Inativo = dataReader("SIS_INATIVO") > 0
                chamado.Solucao = dataReader("CHA_SOLUCAO").ToString()
                chamado.Status = Convert.ToInt64(dataReader("CHA_STATUS"))
                'chamado.TecnicoOld = New Tecnico
                'chamado.TecnicoOld.IdTecnico = Convert.ToInt64(dataReader("TEC_CODIGO"))
                chamado.TelaOld = New Tela
                chamado.TelaOld.IdTela = Convert.ToInt64(dataReader("TEL_CODIGO"))
                chamado.TelaOld.NomeTela = dataReader("TEL_NOME").ToString()
                chamado.TelaOld.Inativa = dataReader("TEL_INATIVA") > 0
                chamado.Tipo = Convert.ToInt64(dataReader("CHA_TIPO"))
                'chamado.Usuario = New Usuario
                'chamado.Usuario.Codigo = dataReader("CHA_MATRICULA")
                'chamado.Versao = Convert.ToDateTime(dataReader("CHA_VERSAO"))
                listaChamados.Add(chamado)
            End While
        Catch ex As Exception

        End Try
    End Function
End Class
